Stroke tapestry methods and systems

ABSTRACT

Prior art digital painting applications create strokes by repeatedly applying a stamp at incremental positions along a path. Such applications led to uniform marks being made by the mark making tool along the stroke as the same process as applied by the software application at each point along the stroke. However, some areas of a painting involve repetitive strokes, which can take a lot of time for the user. Embodiments of the invention provide the user with automated methods and systems that maintain a level of control the user seeks or needs whilst removing the repetitive nature of the area filling thereby saving the user time whilst delivering high quality results. The invention fills the area to be filled to painted with actual, individual strokes, offering the advantages of overlapping strokes and mixing paint for an increased “natural” media look and feel. Additionally, the user is able to either specify parameters for the process in advance or to sculpt/tune the result as the software application paints.

FIELD OF THE INVENTION

This invention relates to digital imagery and more particularly toreducing repetitive strokes for filling an area by providing brushstroke tools, or mark making tools, that automatically fill the areawith natural looking brush strokes.

BACKGROUND OF THE INVENTION

An operation often provided by digital graphics and digital imageeditors is the use of a virtual “paintbrush” (also referred to herein asa “brush”, “brush tool”, or mark making tool) to modify a digital imageby depositing virtual paint or virtual ink. Various prior approacheshave attempted to model a real-world brush and its behavior in thecontext of such an operation. For example, a two-dimensional (2D) rasterimage may be created to represent the shape of the brush as it contactsthe canvas, and the 2D image may be stamped repeatedly along the inputpath. In another approach, a vector representation of the brush tip hasbeen used instead of a 2D raster image.

Some existing digital painting applications create strokes by repeatedlyapplying a stamp at incremental positions along a path. The stampconsists of a 2D array of pixels that represent what the “brush” lookslike at an instant in time. By repeatedly applying the stamp at closespacing, the effect of the brush being dragged continuously across thecanvas is created, in the form of an elongated stroke. Some existingapplications provide multiple settings for users to control theappearance of the stroke, e.g. size, opacity, mark making tool, andbrush style. However, such applications led to uniform marks being madeby the mark making tool along the stroke as the same process as appliedby the software application at each point along the stroke.

However, some areas of a painting involve repetitive strokes, which cantake a lot of time for the user. Accordingly, it would be beneficial toprovide the user with automated methods and systems that maintain thelevel of control the user seeks or needs whilst removing the repetitivenature of the area filling thereby saving the user time whilstdelivering high quality results.

It would be beneficial for the area to be painted with actual,individual strokes, offering the advantages of overlapping strokes andmixing paint for an increased “natural” media look and feel.

It would be further beneficial for the user to be able to either specifyparameters for the process in advance or to sculpt/tune the result asthe software application paints.

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying figures.

SUMMARY OF THE INVENTION

It is an object of the present invention to address limitations withinthe prior art relating to digital imagery and more particularly toreducing repetitive strokes for filling an area by providing brushstroke tools, or mark making tools, that automatically fill the areawith natural looking brush strokes.

In accordance with an embodiment of the invention there are providedcomputer executable instructions stored upon a non-volatile,non-transitory storage medium where the executable instructions whenexecuted by one or more processors of a system configure the system toexecute a process comprising:

-   establishing in dependence upon user input a first point within a    document opened upon the system;-   establishing in dependence upon further user input a second point    within the document;-   establishing in dependence upon additional user input one or more    stroke parameters to apply to rendering content at least one of the    first point and the second point; and-   executing a stroke tapestry engine to generate a stroke tapestry for    rendering upon a display associated with the system; wherein-   the stroke tapestry comprises a plurality of brush strokes    automatically generated by the stroke tapestry engine along a path    established between the first point and the end point; and-   the plurality of brush strokes transition from one or more first    marks at the first point to one or more second marks at the second    point in dependence upon the one or more stroke parameters.

In accordance with an embodiment of the invention there are providedcomputer executable instructions stored upon a non-volatile,non-transitory storage medium where the executable instructions whenexecuted by one or more processors of a system configure the system toexecute a process comprising:

-   establishing in dependence upon user input a first point within a    document opened upon the system and one or more stroke parameters to    apply to rendering content at the first point;-   assigning the first point and one or more stroke parameters to a    first brush engine;-   establishing in dependence upon further user input a second point    within the document opened upon the system and one or more further    stroke parameters to apply to rendering content at the second point;-   assigning the second point and one or more further stroke parameters    to a second brush engine;-   executing a stroke tapestry engine comprising at least the first    engine and second engine to generate a stroke tapestry for rendering    upon a display associated with the system; wherein-   the stroke tapestry comprises a plurality of brush strokes    automatically generated by the stroke tapestry engine along a path    established between the first point and the end point; and-   the plurality of brush strokes transition from one or more first    marks at the first point to one or more second marks at the second    point in dependence upon the one or more stroke parameters.

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention will now be described, by way ofexample only, with reference to the attached Figures, wherein:

FIG. 1A depicts a network environment within which embodiments of theinvention may be employed;

FIG. 1B depicts a wireless portable electronic device supportingcommunications to a network such as depicted in FIG. 1A and assupporting embodiments of the invention;

FIG. 1C depicts home screen of a graphics editing system and graphicsediting application/platform (GESGEAP) implementing one or moreembodiments of the invention;

FIG. 1D depicts an exemplary Control Graphical User Interface (GUI)within a graphics editing system and graphics editingapplication/platform (GESGEAP) implementing one or more embodiments ofthe invention to provide what the inventors refer to as a “StrokeTapestry”;

FIGS. 2 and 3 depict exemplary process flows for user input into astroke tapestry feature of a software application according toembodiments of the invention;

FIGS. 4 to 6 depict exemplary process flows for a software applicationproviding a stroke tapestry feature according to embodiments of theinvention;

FIGS. 7, 8A and 8B depict exemplary process flows for user input into astroke tapestry feature of a software application employing multiplebrush engines according to embodiments of the invention;

FIGS. 9 and 10 depict exemplary process flows for a software applicationproviding a stroke tapestry feature employing multiple brush enginesaccording to embodiments of the invention;

FIG. 11 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with a basic path and two strokes to interpolatefrom according to an embodiment of the invention;

FIG. 12 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with multiple point non-linear path and threestrokes to interpolate from according to an embodiment of the invention;

FIG. 13 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options for each node according to an embodiment of theinvention where the software application generates brush strokes fromone end to the other;

FIG. 14 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options for each node according to an embodiment of theinvention with multiple nodes where the software application generatesbrush strokes from one end to the other;

FIG. 15 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options for each node according to an embodiment of theinvention where the software application generates brush strokesradiating out;

FIG. 16 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options for each node according to an embodiment of theinvention where the software application generates brush strokes withrandomness and growth;

FIG. 17 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options for each node as well as well as whether theprocess is linear, random per node or random per stroke according to anembodiment of the invention with multiple nodes where the softwareapplication generates brush strokes at each node slowly filling thearea;

FIG. 18 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with drag out direction/orientation and userselection of options where the user edits the path shape and addsrequest for randomness according to an embodiment of the invention wherethe software application generates brush strokes along the altered path;

FIG. 19 depicts an exemplary sequence of a stroke tapestry feature of asoftware application with a user selecting two multi-stroke features tointerpolate with a created selection according to an embodiment of theinvention where the software application interpolates the multi-strokefeatures for colour and geometry before painting only that portion ofthe generated stroke tapestry within the created selection;

FIG. 20 depicts an exemplary rendered image via a stroke tapestryfeature of a software application according to an embodiment of theinvention where an intelligent stroke feature finds edges withinunderlying rendered content and follows these edges;

FIG. 21 depicts an exemplary rendered image via a stroke tapestryfeature of a software application according to an embodiment of theinvention where an intelligent stroke feature enabled the user tointeract with the strokes being generated thereby adjusting the renderedstroke tapestry, in this instance to render a ripple of strokes along apath.

DETAILED DESCRIPTION

The present invention is directed to digital imagery and moreparticularly to reducing repetitive strokes for filling an area byproviding brush stroke tools, or mark making tools, that automaticallyfill the area with natural looking brush strokes.

The ensuing description provides exemplary embodiment(s) only, and isnot intended to limit the scope, applicability or configuration of thedisclosure. Rather, the ensuing description of the exemplaryembodiment(s) will provide those skilled in the art with an enablingdescription for implementing an exemplary embodiment. It beingunderstood that various changes may be made in the function andarrangement of elements without departing from the spirit and scope asset forth in the appended claims.

A “portable electronic device” (PED) as used herein and throughout thisdisclosure, refers to a wireless device used for communications andother applications that requires a battery or other independent form ofenergy for power. This includes devices, but is not limited to, such asa cellular telephone, smartphone, personal digital assistant (PDA),portable computer, pager, portable multimedia player, portable gamingconsole, laptop computer, tablet computer, and an electronic reader.

A “fixed electronic device” (FED) as used herein and throughout thisdisclosure, refers to a wireless and/or wired device used forcommunications and other applications that requires connection to afixed interface to obtain power. This includes, but is not limited to, alaptop computer, a personal computer, a computer server, a kiosk, agaming console, a digital set-top box, an analog set-top box, anInternet enabled appliance, an Internet enabled television, and amultimedia player.

A “software application”, also referred to as an “application” or “app”,as used herein may refer to, but is not limited to, a “standalonesoftware application”, an element of a “software suite”, a computerprogram designed to allow an individual to perform an activity, acomputer program designed to allow an electronic device to perform anactivity, and a computer program designed to communicate with localand/or remote electronic devices. An application thus differs from anoperating system (which runs a computer), a utility (which performsmaintenance or general-purpose chores), and a programming tools (withwhich computer programs are created). Generally, within the followingdescription with respect to embodiments of the invention an applicationis generally presented in respect of software permanently and/ortemporarily installed upon a PED and/or FED.

An “enterprise” as used herein may refer to, but is not limited to, aprovider of a service and/or a product to a user, customer, or consumer.This includes, but is not limited to, a retail outlet, a store, amarket, an online marketplace, a manufacturer, an online retailer, acharity, a utility, and a service provider. Such enterprises may bedirectly owned and controlled by a company or may be owned and operatedby a franchisee under the direction and management of a franchiser.

A “service provider” as used herein may refer to, but is not limited to,a third party provider of a service and/or a product to an enterpriseand/or individual and/or group of individuals and/or a device comprisinga microprocessor. This includes, but is not limited to, a retail outlet,a store, a market, an online marketplace, a manufacturer, an onlineretailer, a utility, an own brand provider, and a service providerwherein the service and/or product is at least one of marketed, sold,offered, and distributed by the enterprise solely or in addition to theservice provider.

A “third party” or “third party provider” as used herein may refer to,but is not limited to, a so-called “arm's length” provider of a serviceand/or a product to an enterprise and/or individual and/or group ofindividuals and/or a device comprising a microprocessor wherein theconsumer and/or customer engages the third party but the actual serviceand/or product that they are interested in and/or purchase and/orreceive is provided through an enterprise and/or service provider.

A “user” as used herein may refer to, but is not limited to, anindividual or group of individuals exploiting a software applicationproviding a graphics editing system and graphics editingapplication/platform (GESGEAP) implementing one or more embodiments ofthe invention. This includes, but is not limited to, privateindividuals, employees of organizations and/or enterprises, members ofcommunity organizations, members of charity organizations, men, women,children, teenagers, and animals. In its broadest sense the user mayfurther include, but not be limited to, software systems, mechanicalsystems, robotic systems, android systems, etc. that may becharacterised by providing a gesture or data relating to a gesture to asoftware application providing a graphics editing system and graphicsediting application/platform (GESGEAP) implementing one or moreembodiments of the invention.

A “wearable device” or “wearable sensor” relates to miniature electronicdevices that are worn by the user including those under, within, with oron top of clothing and are part of a broader general class of wearabletechnology which includes “wearable computers” which in contrast aredirected to general or special purpose information technologies andmedia development. Such wearable devices and/or wearable sensors mayinclude, but not be limited to, smartphones, smart watches, e-textiles,smart shirts, activity trackers, smart glasses, environmental sensors,medical sensors, biological sensors, physiological sensors, chemicalsensors, ambient environment sensors, position sensors, neurologicalsensors, drug delivery systems, medical testing and diagnosis devices,and motion sensors.

“Electronic content” (also referred to as “content” or “digitalcontent”) as used herein may refer to, but is not limited to, any typeof content that exists in the form of digital data as stored,transmitted, received and/or converted wherein one or more of thesesteps may be analog although generally these steps will be digital.Forms of digital content include, but are not limited to, informationthat is digitally broadcast, streamed or contained in discrete files.Viewed narrowly, types of digital content include popular media typessuch as MP3, JPG, AVI, TIFF, AAC, TXT, RTF, HTML, XHTML, PDF, XLS, SVG,WMA, MP4, FLV, and PPT, for example, as well as others. Within a broaderapproach digital content mat include any type of digital information,e.g. digitally updated weather forecast, a GPS map, an eBook, aphotograph, a video, a Vine™, a blog posting, a Facebook™ posting, aTwitter™ tweet, online TV, etc. The digital content may be any digitaldata that is capable of being at least one of generated, selected,created, modified, and transmitted with a software application allowinga user of the software application to generate, select, create, modify,and edit visual and/or audiovisual content within the digital content.

Reference to a “document” as used herein may refer to, but is notlimited to, any machine-readable and machine-storable work product. Adocument may be a file, a combination of files, one or more files withembedded links to other files, etc. The files may be of any type, suchas text, audio, image, video, etc. Parts of a document to be rendered toan end user can be thought of as “content” of the document. A documentmay include “structured data” containing both content (words, pictures,etc.) and some indication of the meaning of that content (for example,e-mail fields and associated data, HTML tags and associated data, etc.).In the context of the Internet, a common document is a Web page. Webpages often include content and may include embedded information (suchas meta-information, hyperlinks, etc.) and/or embedded instructions(such as Javascript, etc.). In many cases, a document has a unique,addressable, storage location and can therefore be uniquely identifiedby this addressable location such as a universal resource locator (URL)for example used as a unique address used to access information on theInternet. “Document information” as used herein may refer to, but is notlimited to, may include any information included in the document,information derivable from information included in the document(referred to as “document derived information”), and/or informationrelated to the document (referred to as “document related information”),as well as an extensions of such information (e.g., information derivedfrom related information). An example of document derived information isa classification based on textual content of a document. Examples ofdocument related information include document information from otherdocuments with links to the instant document, as well as documentinformation from other documents to which the instant document links.

A “mark making tool”, also referred to as a “mark tool” or “markingtool”, as used herein may refer to, a tool for applying a visual effectto a graphics image within a software application including, forexample, a graphics generating tool, a graphics editing tool, and animage processing tool. Accordingly, a mark making tool may simulate realand unreal systems for the application, removal, or modification ofinformation including, but not limited to, colour, texture, and contentto a graphics image. As such a mark making tool may include, but is notlimited to, a brush, an air brush, a pen, a pencil, a nib, a spray can,a sprayer, a sponge, a knife, a mathematical algorithm, a physicalsystem of elements obeying physical laws, and a physical system obeyingnon-physical laws.

A “brush stroke” or “stroke”, as used herein may refer to, but is notlimited to a class of mark making tools that simulate physical brushesfor applying a medium, e.g. oil, watercolour, acrylic, onto a canvas,document, or other surface. A stroke may alternatively be simulatingother physical medium application techniques including, but not limited,to airbrushes, chalk, markers, palette knives and sponges for example.Accordingly, within this description the term brush is not limited to aphysical brush but should be interpreted as meaning a tool to apply amedium to a surface.

A “brush engine”, as used herein may refer to, a module or modulesforming part of a graphics software application which generates brushstrokes within the graphics software application to render the brushstrokes upon the virtual canvas or other surface to which the brushstroke(s) are applied.

A “gesture”, also referred to as a “motion” or “input”, as used hereinmay refer to, an action by a user resulting in the movement and/oraction of a mark making tool relative to a graphics image within asoftware application including, for example, a graphics generating tool,a graphics editing tool, and an image processing tool. As such a gesturemay include, but not be limited to, a swipe, a tap, a motion, a press,and a click captured by the software application through an interfaceincluding, but not limited to, image processing, image capture, audiocommand, a user interface and a haptic interface.

A “gesture characteristic”, also referred to as a “gesture expression”or an “expression”, as used herein may refer to an aspect of a gestureof a user or setting exploited within a software application to modify avalue relating to a mark making tool within the software application. Assuch as a gesture characteristic or expression may include, but not belimited, to velocity, direction, pressure, wheel, tilt, bearing,rotation, source of the gesture, and random. A source of the gesture mayinclude, but not be limited to, a touchpad, a stylus, a mouse, keypad,keyboard, accelerometer or accelerometer derived data, tracked motion ofa user or a predetermined portion of a user, an external image source,an external audiovisual source, an external multimedia source, biometricdata of a user, and an item of environmental data. An expression orgesture characteristic may be applied to one or more behaviours/aspectsof a mark making tool including, but not limited to, global chaos, localchaos, smoothness, damping, jitter, number, count, weighting, force,direction, mapping, colour, colour variability, resaturation, bleed,feature, grain, concentration, setting rate, viscosity, wetness, opacityand hardness.

A “user interface”, also referred to as a “controller” or “hapticinterface”, as used herein may refer to a device and/or system capturingone or more actions of a user and providing these to a softwareapplication. Accordingly, a user interface may include an imagecapture/processing system, a gesture recognition system, a stylus, awearable device, a touchscreen, a keypad, a mouse, a touchpad, a tablet,an accelerometer, and a motion recognition system.

“Stroke tapestry” or a “stroke tapestry”, as used herein refers to, butis not limited to, a software feature or a result of a software featurewithin a graphics editing system and graphics editingapplication/platform (GESGEAP) according to embodiments of the inventionwhich fills an area using a series of strokes generated by the GESGEAP.

A “software engine” (engine) as used herein refers to, but is notlimited to, a piece of software providing an encapsulated block offunctionality.

A “spooler” as used herein refers to, but is not limited to, a softwarecomponent of a GESGEAP which processes stroke data, such as physicalcoordinates, and expression (gesture characteristic) data to generate astroke.

Referring to FIG. 1A there is depicted a Network Environment 100A withinwhich embodiments of the invention may be employed supporting graphicsediting systems and graphics editing applications/platforms (GESGEAPs)according to embodiments of the invention. Such GESGEAPs, for exampleincluding digital graphics editor and digital painting applications. Asshown first and second user groups 100A and 100B respectively interfaceto a telecommunications Network 100. Within the representativetelecommunication architecture a remote central exchange 180communicates with the remainder of a telecommunication service providersnetwork via the Network 100 which may include for example long-haulOC-48/OC-192 backbone elements, an OC-48 wide area network (WAN), aPassive Optical Network, and a Wireless Link. The central exchange 180is connected via the Network 100 to local, regional, and internationalexchanges (not shown for clarity) and therein through Network 100 tofirst and second cellular APs 195A and 195B respectively which provideWi-Fi cells for first and second user groups 100A and 100B respectively.Also connected to the Network 100 are first and second Wi-Fi nodes 110Aand 110B, the latter of which being coupled to Network 100 via router105. Second Wi-Fi node 110B is associated with Enterprise 160, e.g.Disney Pixar™, within which are other first and second user groups 100Aand 100B. Second user group 100B may also be connected to the Network100 via wired interfaces including, but not limited to, DSL, Dial-Up,DOCSIS, Ethernet, G.hn, ISDN, MoCA, PON, and Power line communication(PLC) which may or may not be routed through a router such as router105.

Within the cell associated with first AP 110A the first group of users100A may employ a variety of PEDs including for example, laptop computer155, portable gaming console 135, tablet computer 140, smartphone 150,cellular telephone 145 as well as portable multimedia player 130. Withinthe cell associated with second AP 110B are the second group of users100B which may employ a variety of FEDs including for example gamingconsole 125, personal computer 115 and wireless/Internet enabledtelevision 120 as well as cable modem 105. First and second cellular APs195A and 195B respectively provide, for example, cellular GSM (GlobalSystem for Mobile Communications) telephony services as well as 3G and4G evolved services with enhanced data transport support. Secondcellular AP 195B provides coverage in the exemplary embodiment to firstand second user groups 100A and 100B. Alternatively the first and seconduser groups 100A and 100B may be geographically disparate and access theNetwork 100 through multiple APs, not shown for clarity, distributedgeographically by the network operator or operators. First cellular AP195A as show provides coverage to first user group 100A and environment170, which comprises second user group 100B as well as first user group100A. Accordingly, the first and second user groups 100A and 100B mayaccording to their particular communications interfaces communicate tothe Network 100 through one or more wireless communications standardssuch as, for example, IEEE 802.11, IEEE 802.15, IEEE 802.16, IEEE802.20, UMTS, GSM 850, GSM 900, GSM 1800, GSM 1900, GPRS, ITU-R 5.138,ITU-R 5.150, ITU-R 5.280, and IMT-1000. It would be evident to oneskilled in the art that many portable and fixed electronic devices maysupport multiple wireless protocols simultaneously, such that forexample a user may employ GSM services such as telephony and SMS andWi-Fi/WiMAX data transmission, VOIP and Internet access. Accordinglyportable electronic devices within first user group 100A may formassociations either through standards such as IEEE 802.15 or Bluetoothas well in an ad-hoc manner.

Also connected to the Network 100 are Social Networks (SOCNETS) 165,first and second graphics editors 170A and 170B respectively, e.g.Corel™ Painter™ and Adobe™ Illustrator, first and second web basedgraphic editors 170C and 170D respectively, e.g. PhotoCommander™ andFatPaint™, and first and second video editing tools 175A and 175Brespectively, e.g. Corel™ MobileStudioTMand Cinnerla™, first and secondgraphics tools 175C and 175D as well as first to third servers 190A to190C respectively which together with others, not shown for clarity.First to third servers 190A to 190C respectively may host according toembodiments of the inventions multiple services associated with aprovider of graphics editing systems and graphics editingapplications/platforms (GESGEAPs); a provider of a SOCNET or SocialMedia (SOME) exploiting GESGEAP features; a provider of a SOCNET and/orSOME not exploiting GESGEAP features; a provider of services to PEDSand/or FEDS; a provider of one or more aspects of wired and/or wirelesscommunications; an Enterprise 160 exploiting GESGEAP features; licensedatabases; content databases; image databases; content libraries;customer databases; websites; and software applications for download toor access by FEDs and/or PEDs exploiting and/or hosting GESGEAPfeatures. First to third servers 190A to 190C respectively may also hostfor example other Internet services such as a search engine, financialservices, third party applications and other Internet based services.

Accordingly, a graphics designer and/or user (GRADUS or user) mayexploit a PED and/or FED within an Enterprise 160, for example, andaccess one of the first or second primary content servers 190A and 190Brespectively to perform an operation such as accessing/downloading anapplication which provides GESGEAP features according to embodiments ofthe invention; execute an application already installed providingGESGEAP features; execute a web based application providing GESGEAPfeatures; or access content. Similarly, a GRADUS may undertake suchactions or others exploiting embodiments of the invention exploiting aPED or FED within first and second user groups 100A and 100Brespectively via one of first and second cellular APs 195A and 195Brespectively and first Wi-Fi nodes 110A.

Now referring to FIG. 1B there is depicted a Schematic 100B of a networkto which an Electronic Device 101 supporting graphics editing systemsand graphics editing applications/platforms (GESGEAPs) and GESGEAPfeatures according to embodiments of the invention is connected.Electronic Device 101 may, for example, be a PED, a FED, or a wearabledevice and may include additional elements above and beyond thosedescribed and depicted. Also depicted in conjunction with the ElectronicDevice 101 are exemplary internal and/or external elements forming partof a simplified functional diagram of an Electronic Device 101 within anoverall simplified schematic of a system supporting SAP featuresaccording to embodiments of the invention which include includes anAccess Point (AP) 106, such as a Wi-Fi AP for example, a Network Device107, such as a communication server, streaming media server, and arouter. The Network Device 107 may be coupled to the AP 106 via anycombination of networks, wired, wireless and/or optical communicationlinks. Also connected to the Network 102 are Social Media Networks(SOCNETS) 165; first and second remote systems 170A and 170Brespectively; first and second websites 175A and 175B respectively;first and third 3rd party service providers 175C and 175E respectively;and first to third servers 190A to 190C respectively.

The Electronic Device 101 includes one or more Processors 110 and aMemory 112 coupled to Processor(s) 110. AP 106 also includes one or moreProcessors 111 and a Memory 113 coupled to Processor(s) 210. Anon-exhaustive list of examples for any of Processors 110 and 111includes a central processing unit (CPU), a digital signal processor(DSP), a reduced instruction set computer (RISC), a complex instructionset computer (CISC), a graphics processing unit (GPU) and the like.Furthermore, any of Processors 110 and 111 may be part of applicationspecific integrated circuits (ASICs) or may be a part of applicationspecific standard products (ASSPs). A non-exhaustive list of examplesfor Memories 112 and 113 includes any combination of the followingsemiconductor devices such as registers, latches, ROM, EEPROM, flashmemory devices, non-volatile random access memory devices (NVRAM),SDRAM, DRAM, double data rate (DDR) memory devices, SRAM, universalserial bus (USB) removable memory, and the like.

Electronic Device 101 may include an audio input element 214, forexample a microphone, and an Audio Output Element 116, for example, aspeaker, coupled to any of Processor(s) 110. Electronic Device 101 mayinclude an Optical Input Element 218, for example, a video camera orcamera, and an Optical Output Element 220, for example an LCD display,coupled to any of Processor(s) 110. Electronic Device 101 also includesa Keyboard 115 and Touchpad 117 which may for example be a physicalkeyboard and touchpad allowing the user to enter content or selectfunctions within one of more Applications 122. Alternatively, theKeyboard 115 and Touchpad 117 may be predetermined regions of a touchsensitive element forming part of the display within the ElectronicDevice 101. The one or more Applications 122 that are typically storedin Memory 112 and are executable by any combination of Processor(s) 110.Electronic Device 101 also includes Accelerometer 160 providingthree-dimensional motion input to the Processor(s) 110 and GPS 162 whichprovides geographical location information to Processor(s) 110.

Electronic Device 101 includes a Protocol Stack 124 and AP 106 includesan AP Stack 125. Within Protocol Stack 124 is shown an IEEE 802.11protocol stack but alternatively may exploit other protocol stacks suchas an Internet Engineering Task Force (IETF) multimedia protocol stackfor example or another protocol stack. Likewise, AP Stack 125 exploits aprotocol stack but is not expanded for clarity. Elements of ProtocolStack 124 and AP Stack 125 may be implemented in any combination ofsoftware, firmware and/or hardware. Protocol Stack 124 includes an IEEE802.11-compatible PHY module that is coupled to one or more Tx/Rx &Antenna Circuits 128A and an IEEE 802.11-compatible MAC module which iscoupled to an IEEE 802.2-compatible LLC module. Protocol Stack 124 alsoincludes modules for Network Layer IP, a transport layer User DatagramProtocol (UDP), a transport layer Transmission Control Protocol (TCP), asession layer Real Time Transport Protocol (RTP), a Session AnnouncementProtocol (SAP), a Session Initiation Protocol (SIP) and a Real TimeStreaming Protocol (RTSP). Protocol Stack 124 includes a presentationlayer Call Control and Media Negotiation module 150, one or more audiocodecs and one or more video codecs. Applications 122 may be able tocreate maintain and/or terminate communication sessions with the NetworkDevice 107 by way of AP 106 and therein via the Network 102 to one ormore of Social Networks (SOCNETS) 165; first and second graphics editors170A and 170B respectively, e.g. Corel™ Painter™ and Adobe™ Illustrator,first and second web based graphic editors 170C and 170D respectively,e.g. PhotoCommander™ and FatPaint™, and first and second video editingtools 175A and 175B respectively, e.g. Corel™ MobileStudioTMandCinnerla™, first and second graphics tools 175C and 175D as well asfirst to third servers 190A to 190C respectively which together withothers, not shown for clarity.

Typically, Applications 122 may activate any of the SAP, SIP, RTSP, andCall Control & Media Negotiation 150 modules for that purpose.Typically, information may propagate from the SAP, SIP, RTSP, CallControl & Media Negotiation 150 to the PHY module via the TCP module, IPmodule, LLC module and MAC module. It would be apparent to one skilledin the art that elements of the Electronic Device 101 may also beimplemented within the AP 106 including but not limited to one or moreelements of the Protocol Stack 124, including for example an IEEE802.11-compatible PHY module, an IEEE 802.11-compatible MAC module, andan IEEE 802.2-compatible LLC module. The AP 106 may additionally includea network layer IP module, a transport layer User Datagram Protocol(UDP) module and a transport layer Transmission Control Protocol (TCP)module as well as a session layer Real Time Transport Protocol (RTP)module, a Session Announcement Protocol (SAP) module, a SessionInitiation Protocol (SIP) module and a Real Time Streaming Protocol(RTSP) module, and a call control & media negotiation module. Portableelectronic devices (PEDs) and fixed electronic devices (FEDs)represented by Electronic Device 101 may include one or more additionalwireless or wired interfaces in addition to or in replacement of thedepicted IEEE 802.11 interface which may be selected from the groupcomprising IEEE 802.15, IEEE 802.16, IEEE 802.20, UMTS, GSM 850, GSM900, GSM 1800, GSM 1900, GPRS, ITU-R 5.138, ITU-R 5.150, ITU-R 5.280,IMT-1010, DSL, Dial-Up, DOCSIS, Ethernet, G.hn, ISDN, MoCA, PON, andPower line communication (PLC).

The Front End Tx/Rx & Antenna 128A wirelessly connects the ElectronicDevice 101 with the Antenna 128B on Access Point 206, wherein theElectronic Device 101 may support, for example, a national wirelessstandard such as GSM together with one or more local and/or personalarea wireless protocols such as IEEE 802.11 a/b/g Wi-Fi, IEEE 802.16WiMAX, and IEEE 802.15 Bluetooth for example. Accordingly, it would beevident to one skilled the art that the Electronic Device 101 mayaccordingly download original software and/or revisions for a variety offunctions. In some embodiments of the invention the functions may not beimplemented within the original as sold Electronic Device 101 and areonly activated through a software/firmware revision and/or upgradeeither discretely or in combination with a subscription or subscriptionupgrade for example. Accordingly, as will become evident in respect ofthe description below the Electronic Device 101 may provide a user withaccess to one or more GESGEAP including, but not limited to, softwareinstalled upon the Electronic Device 101 or software installed upon oneor more remote systems such as those associated with Social Networks(SOCNETS) 165; first and second graphics editors 170A and 170Brespectively, e.g. Corel™ Painter™ and Adobe™ Illustrator, first andsecond web based graphic editors 170C and 170D respectively, e.g.PhotoCommander™ and FatPaint™, and first and second video editing tools175A and 175B respectively, e.g. Corel™ MobileStudioTMand Cinnerla™,first and second graphics tools 175C and 175D as well as first to thirdservers 190A to 190C respectively.

Now referring to FIG. 1C there is depicted a Home Screen 100C of adigital graphics editor, digital painting, application, the GESGEAP,according to an embodiment of the invention, e.g. Corel™ Painter™.Accordingly, within the Home Screen 100C a user has opened a Window1000, which may for example be untextured, textured to mimic a paper,canvas, or other surface for “painting.” Optionally, a texture may beapplied prior to the user beginning work, during their work, or upon itscompletion. Similarly, other effects may be added by the user throughthe Menu Bar 181 including employing multiple layers with differenteffects and/or properties, different illuminations, etc. as known withinthe art. The user may also be resented with a series of menus that canbe manipulated, docked, undocked and moved with respect to the HomeScreen 100C and allowing the user to select, adjust, modify, add,delete, and control various aspects of their interaction with theGESGEAP. These include, but are not limited to:

-   -   Mark Making Tool Selector and Settings 182;    -   Main Feature Menu 183;    -   Canvas Navigator Menu 184;    -   Colour Menu 185, for the overall application;    -   Layer/Channel Management Menu 186    -   Flow Mapping Menu 187, which allows an underlying mapping to be        applied to effects although actual flow map employed is itself        not rendered; and    -   Stroke Tapestry Menu 188.

Accordingly, within the embodiments of the invention described below andin respect of FIGS. 2 to 21 a user may select features andfunctionalities according to embodiments of the invention and establishaspects of these at different settings through such menus and others aswould be evident to one of skill in the art.

As noted supra prior art GESGEAPs in order to improve realism withingraphical images generated and/or modified by users with the GESGEAPsprovide mark making tools with automatic generation options in responseto the user's stroke with the mark making tool. Whilst many, of theseautomatically generated aspects of the user's stroke do indeed addperceived realisms such as varying brush pressure on application/removalfrom a canvas and/or paper or the abrupt application from activation ofa spray can nozzle for example. However, in many instances theseautomatically generated effects within the stroke are implementedthrough the application of random behaviours to the strokes whichactually appear less realistic as they reflect instances that a user,for example, painting with watercolours or oils, could not achieve.Accordingly, the inventors have established a methodology ofautomatically adding noise to the computer generated mark making toolstrokes allowing aspects of the mark making tool generated to be variedautomatically. The inventors have associated the terms “randomness”within the context of this application to this setting which can be setby the user through the Stroke Tapestry Menu 188.

Whilst, within the ensuing embodiments of the invention as described anddepicted with respect to FIGS. 2 to 21 respectively the concepts arepresented with respect to brush strokes and brush mark making tools itwould be evident to one of skill in the art that the methods and systemsdescribed may be applied to other mark making tools for filling areas ofthe canvas. For example, within Corel™ Painter™, a series of mark makingtools which may exploit embodiments of the invention are provided withindifferent categories of mark making tools including:

-   -   Airbrushes    -   Artists    -   Chalks    -   Gel    -   Gouache;    -   Impasto;    -   Markers;    -   Palette Knives;    -   Real Watercolour; and    -   Sponges.

However, some areas of a painting involve repetitive strokes, which cantake a lot of time for the user. Accordingly, the inventor hasestablished graphics editing systems and graphics editingapplications/platforms (GESGEAPs) which, beneficially, provide a userwith automated methods and systems that maintain the level of controlthe user seeks or needs whilst removing the repetitive nature of thearea filling thereby saving the user time whilst delivering high qualityresults.

These GESGEAPs, beneficially, filling the area to be painted withactual, individual strokes, offering the advantages of overlappingstrokes and mixing paint for an increased “natural” media look and feel.Further, these GESGEAPS beneficially allow the user to either specifyparameters for the process in advance or to sculpt/tune the result asthe software application paints.

Accordingly, by employing what the inventor refers to as a “stroketapestry” or “stroke tapestry effect a user can move beyond the currentparadigm of random/pattern-based fills. In its most simple form, a usercan specify an initial stroke at one point within a document, e.g.canvas, specify a different stroke at another point in the document andthe stroke tapestry feature within the GESGEAP automaticallyinterpolates a series of new strokes between these two ends in avisually appealing manner.

For example, some existing, traditional artistic methods tend to involvea significant number of manually applied strokes, which take a lot oftime. Some examples of these employed when creating art in a specificstyle include, but are not limited to, pointillism (stippling),impressionism, and abstract expressionism. Further, multiple repeatingstrokes or patterns are frequently needed to mimic real-world,conceptual or abstract imagery. Examples of such naturally occurringelements include, but are not limited to, waves, leaves on trees, grass,clouds, and precipitation. Lastly, brush strokes may simply be neededover areas to create depth, texture or an area of interest. Examples inthis instance including, but not being limited to, creating texture orpatterns, splattering, a gradient of strokes from a heavy texture tolight texture or vice-versa, a gradient of strokes with rich, saturatedcolor to areas of low saturation or vice-versa.

Within prior art GEGEAPs techniques exist for so-called “auto-painting”where in this process, the user has options as to which strokes areapplied and how many layers of strokes are applied, but they are notable to specify a stroke pattern, or able to control the transitionbetween two or more stroke patters, so the strokes appear to be verycomputer generated.

Within some prior art GESGEAPs there are functions available to findedges or objects within the content already applied to the canvas ordocument being worked upon. Examples of this include so-called “SmartStrokes” or “saliency” in Corel™ Painter™. Whilst the underlyingtechnology of these features can aid the user to help ensure strokes endup on relevant features of the image such as objects, the strokes do notalways go in an orientation that is expected. For example, addingstrokes to look like waves on a lake with such features can cause issuesas the applied strokes are simply following the shape of the shorelinerather than reflecting the real world nature of waves approaching avaried geometry.

Further, within some prior art GEGEAPs, such as Corel™ Painter™ forexample, a technology feature accessible to users is what is referred toas “cloning.” This technology samples one or more pixels of a sourceimage and automatically alters the color of a new brush stroke to matchor closely match the colour of these one or more pixels in an underlying“source image”. This technology can be exploited for discrete userdriven brush strokes, in auto-painting, or a combination of the two.

As will become evident through the following description embodiments ofthe invention relating to a “stroke tapestry” or “stroke tapestries”enable users to control an area being auto-filled with a range of brushtechnologies, brush strokes, and/or paint types in order to obtain moreinteresting results or results that mimic the reality they seek toinclude. Embodiments of the invention therefore may combine theunderlying technology of a stroke tapestry with technology such as“Smart Strokes”, saliency and cloning discretely or in combinationsthereof. These combinations therefore allowing the user to combinestroke tapestries with their intelligent strokes and/or intelligentpaths to direct these underlying technologies.

Within embodiments of the invention described and depicted below,particularly with respect to FIGS. 11 to 20, the underlying technologyis presented with respect to simple paths with two or more points.However, it would be evident that in the definition of these points,either individually or as a path via a stroke that each gesture therebyhas associated with it one or more gesture characteristics orexpressions which may be employed within the stroke tapestry generationaccording to embodiments of the invention.

Such gesture characteristics or expressions may include, but not belimited, to velocity, direction, pressure, wheel, tilt, bearing,rotation, and a source of the gesture for example where the source ofthe gesture to which the gesture characteristics relate may include, butnot be limited to, a touchpad, a stylus, a mouse, keypad, keyboard,accelerometer or accelerometer derived data, tracked motion of a user ora predetermined portion of a user, an external image source, an externalaudiovisual source, an external multimedia source, biometric data of auser, and an item of environmental data. An expression or gesturecharacteristic may be applied to one or more behaviours/aspects of thestroke tapestry generation including, but not limited to, applyingglobal chaos, applying local chaos, applying smoothness, damping,applying jitter, defining a number or count of brush strokes, aweighting, simulated force applied to brush, direction, mapping, colour,colour variability, saturation, bleed, feature, grain, concentration,setting rate, viscosity, wetness, opacity and hardness, for example.

These gesture characteristics or expressions may be automaticallydetermined by the GESGEAP from one or more user interfaces to theGESGEAP which may include, but not be limited to, an imagecapture/processing system, a gesture recognition system, a stylus, awearable device, a touchscreen, a keypad, a mouse, a touchpad, a tablet,an accelerometer, and a motion recognition system.

As described below with respect to FIG. 1D a setting for the stroketapestry feature discretely identified in the Control Graphical UserInterface (GUI) 100D is “Speed.” This sets the speed at which strokeswithin the stroke tapestry are generated allowing the user to guidetheir generation, such as allowing them to choose areas of interest thatreceive more strokes for example or optionally the stroke size, opacity,bearing, etc. through modifications made to the gesture characteristicsestablished when the user initially established the stroke tapestrybeing applied.

Accordingly, a typical process flow for a stroke tapestry according toan embodiment of the invention may execute as follows through first to

-   -   First step, where a document, i.e. a rendered representation of        a portion of an item of content, is selected.    -   Second step, where the user operates a graphical control to        define a starting point for the stroke tapestry and specifies        parameters for the one or more brush engines generating the        stroke tapestry such as size, opacity, stroke shape, etc. These        may be defined specifically by the user through one or more        graphical user interfaces (GUIs) or automatically derived as one        or more gesture characteristics.    -   Third step, where the user specifies the end point and specifies        the same or different parameters for the one or more brush        engines generating the stroke tapestry These may be similarly        defined specifically by the user through one or more GUIs or        automatically derived as one or more gesture characteristics.    -   Fourth step, where the user specifies how the one or more brush        engines interpolate between the two points, such as how many        strokes, how wide the area of coverage will be, what type of        path/shape/randomness (simply referred to as a path throughout        this disclosure) for the coverage, and if any other aspects will        be allowed to influence the strokes such as “smart strokes”,        saliency, image processing for edge detection and/or object        detection, etc.    -   Fifth step, where the user specifies how fast the strokes will        be added (speed), and whether they will be able interact with        the strokes being generated in real-time in order to influence        the stroke tapestry;    -   Sixth step, where based upon the defined parameters, in its most        basic implementation, the stroke tapestry engine comprising one        or more burst engines calculates the required number of steps        required to complete the request as well as mapping out the        parameters needed for each individual step; and    -   Seventh step, where the stroke tapestry engine generates and        renders the stroke tapestry to the user adjusted according to        the speed set by the user if they wish to dynamically interact        with and/or influence the stroke tapestry generated.

Within other embodiments of the invention the user may choose from aselection of pre-determined parameters through one or more GUIs withinthe GESGEAP, such that there are fewer choices for them to make, and thestroke tapestry generation experience is streamlined. For example, theuser may be able to select a stroke tapestry which mimics an existing,artistic convention, such as, for example, a “light stippling” preset or“heavy stippling” preset for one node of the path and the other of“light stippling” and “heavy stippling” for another node or define thesame for each node. Such presets may be for standard paintingtechniques, such as pointillism, for example or they may be specific toa particular painters exploitation of such a technique or group ofpainters. For example, a user may be able to select “Neo-Impressionismpointillism” or “Divisionist pointillism”, the latter using a similartechnique of patterns to form images though with larger cube-likebrushstrokes.

It would be evident that the stroke tapestry engine may have to“interpolate” between the parameters, either user specified orautomatically specified, to fill the area as requested. For example, abrush may start with a small size, e.g. 10 pixels in diameter, but mayend with a larger size, e.g. 100 pixels in diameter. Accordingly, if theuser requests to fill a path 200 pixels wide by 200 pixels tall, thenthe initial stroke “row” will need 10 brush strokes but the final stroke“row” will need only 2 brush strokes. Accordingly, the stroke tapestryengine will interpolate for each subsequent “row” of strokes going fromsmall (10 px) slowly up to large (100 px). In other cases, space betweeneach stroke may be desirable, and can be specified by the user orpreset. Optionally, the gradation may be non-linear rather than linearor it may be defined by on or more aspects of the setting up of thestroke tapestry such as from the gesture characteristics, analysis of anunderlying image or content where the stroke tapestry is being applied(where this underlying image or content is part of the document orsimply used to define aspects of the document but does not form part ofthe document when finally rendered.

It would be evident that varying degrees of randomness, non-linearity,noise, or jitter may also be introduced, either as a user parameter oras a fixed part of the calculation, to influence the results.

In addition, the user may specify different strokes that the stroketapestry follows. The stroke may be a simple s-curve, a swirl, adiagonal stroke, or even some stroke they record and save in the GESGEAPand retrieve/apply. In these instances, the recorded stroke path may befitted to start exactly at the start/end points defined by the user orthe stroke tapestry engine may calculate an interpolated path to whichthe strokes are applied.

Now referring to FIG. 1D there is depicted an exemplary ControlGraphical User Interface (GUI) 100D within a graphics editing system andgraphics editing application/platform (GESGEAP) implementing one or moreembodiments of the invention to provide a stroke tapestry. Accordingly,as depicted there are first to eighth GUI elements 10110 to 10180comprising:

-   -   First GUI element 10110 where the user can select a preset        stroke type from a drop menu or menus of stroke options.        Optionally, the user may select the “brush” (e.g. airbrush,        chalk, brush, sponge etc.) and then the stroke type. Optionally,        through these menu(s) the user may alternatively select “user        input” so that they generate the brush stroke to be employed or        may select a painter, painting style etc. as described above.    -   Second GUI element 10120 wherein the size of the strokes at that        point about to selected or just established is set;    -   Third GUI element 10130 wherein the direction of the strokes at        that point about to selected or just established is set;    -   Fourth GUI element 10140 wherein a degree of randomness of the        strokes at that point about to selected or just established is        set;    -   Fifth GUI element 10150 wherein a spacing between the strokes        established by the stroke tapestry engine at that point about to        selected or just established is set;    -   Sixth GUI element 10160 wherein a width of strokes established        by the stroke tapestry engine at that point about to selected or        just established is set;    -   Seventh GUI element 10170 wherein a colour of the strokes        established by the stroke tapestry engine at that point about to        selected or just established is set;    -   Eighth GUI element 10180 wherein the speed at which the stroke        tapestry engine generates the stroke tapestry which is being        rendered to the user is defined. This may be, for example, a        percentage setting, a time between strokes (e.g. equivalent to a        pause between rendering a row, column or otherwise defined        subset of the strokes of the stroke tapestry.

It would be evident that optionally, the user may establish through theControl GUI 100D that one or more aspects of the path defined by theuser may be defined by one or more gesture characteristics of the user'sinteraction with the document rather than through the drop-down menu.Such features being either through the Control GUI 100D directly orthrough other GUIs or other means of setting control settings of thestroke tapestry.

Referring to FIGS. 2 and 3 there are depicted exemplary Process Flows200 and 300 for user input into a stroke tapestry feature of a softwareapplication according to embodiments of the invention. Referringinitially to Process Flow 200 this is depicted as comprising first tofourth steps 210 to 240; these being:

-   -   First step 210 wherein the user specifies the start point with        parameters made available to the user;    -   Second step 220 wherein the start point parameters, e.g. as        defined through the Control GUI 100D, gesture characteristics,        etc.;    -   Third step 230 wherein the user defines the end point and its        associated parameters; and    -   Fourth step 240 wherein the user defines additional intermediate        points between the start and end points.

Alternatively, the points may be sequentially defined discretely orthrough a path defined by a stroke where the end point is defined lastrather than before intermediate points.

Now referring to Process Flow 300 this is depicted as comprising firstto fourth steps 310 to 340; these being:

-   -   First step 310 wherein the user specifies a predetermined        parameter set, e.g. particular artist, artistic style, presets,        defaults, or simply because they wish them applied to all        points;    -   Second step 320 wherein the user defines the start point;    -   Third step 330 wherein the user defines the end point; and    -   Fourth step 340 wherein the user defines additional intermediate        points between the start and endpoints.

Now referring to FIGS. 4 to 6 there are depicted exemplary Process Flows400 to 600 for a software application providing a stroke tapestryfeature according to embodiments of the invention. Within each ofProcess Flows 400 to 600 a common set of options are displayed whereinthe remainder of each of Process Flows 400 to 600 depicts exemplaryprocess flows triggered from the different options within the set ofoptions. These common steps being first to fourth steps 410 to 440 whichcomprise:

-   -   First step 410 wherein each process starts;    -   Second step 420 wherein the user may select “Option A” for a        basic painting mode;    -   Third step 430 wherein the user selects “Option B” to interact        with the strokes; and    -   Fourth step 440 wherein the user selects “Option C” to choose        parameters in combination with what the inventor refers to as        “Intelligent Paths.”

Accordingly, referring to FIG. 4 the user upon selecting “Option A” maybe presented with an intermediate menu/GUI to establish first Sub-Flow450 or second Sub-Flow 460 as the process executed by the stroketapestry engine. Accordingly, as depicted first Sub-Flow 450 comprisesfirst to ninth Sub-Flow Elements 451 to 459, these comprising:

-   -   First Sub-Flow Element 451: Calculate Brush Parameters needed        for First Mark;    -   Second Sub-Flow Element 452: Calculate Stroke needed for First        Mark;    -   Third Sub-Flow Element 453: Calculate Path needed for First Mark    -   Fourth Sub-Flow Element 454: Initiate Spooler and Apply Brush        Mark;    -   Fifth Sub-Flow Element 455: Calculate Brush Parameters needed        for Second Mark (with interpolation if required);    -   Sixth Sub-Flow Element 456: Calculate Stroke needed for Second        Mark (with interpolation if required);    -   Seventh Sub-Flow Element 457: Calculate Path needed for Second        Mark (with interpolation if required);    -   Eighth Sub-Flow Element 458: Initiate Spooler and Apply Brush        Mark and    -   Ninth Sub-Flow Element 459 wherein the process loops and repeats        until the request for the stroke tapestry is completed.

Second Sub-Flow 460 comprises tenth to thirteen Sub-Flow Elements 461 to464, these comprising:

-   -   Tenth Sub-Flow Element 461: Calculate All Parameters needed for        Brush Marks    -   Eleventh Sub-Flow Element 462: Calculate All Strokes needed All        Brush Marks    -   Twelfth Sub-Flow Element 463: Calculate All Paths needed for All        Brush Marks; and    -   Thirteenth Sub-Flow Element 464: Initiate Spooler and Apply All        Brush Marks.

Accordingly, considering first Sub-Flow 450 and second Sub-Flow 460 fora simple 2-point stroke fill then this may operate in either manner, orone may be defined automatically according to aspects such as availablecomputing power of a local device the user is working upon or whetherthe GESGEAP is in execution within a virtual machine upon a remoteserver.

First Sub-Flow 450 represents the scenario where the brush enginecalculates the initial brush parameters needed for each brush mark (i.e.size, shape, etc.) and then calculates the strokes and path(s) needed toachieve the first step of the user request. Once these calculations arecomplete, the program initiates the spooler to execute the applicationof brush strokes to the document. This is repeated by the brush engineto calculate the next set of parameters required for the second brushmark, run the spooler, etc. until the user-request is complete.

Second Sub-Flow 460 represents the scenario where the brush engineperforms the calculations necessary to achieve all specified brushmarks, strokes, and paths first. This process is identical tocalculating the parameters for a single brush, however it will beapplied to every single mark that would be needed based upon the user'sparameters, such that the performance of applying the brush strokes isvery fast (i.e. real-time or near to real-time). This may have highmemory and processing requirements such that it may be enabled undercertain hardware/firmware environments rather than all processingenvironments. Once all possible brush shapes and sizes are calculated, asecond round of processing is performed to determine all strokes andpaths needed to fulfill the user request. Finally, after these twocalculation sets are complete, the program initiates the spooler toexecute the application of brush strokes to the document. In thisdesign, the spooler fetches the different brush sizes and shapes frommemory. The brush engine will continue this process until the userrequest is complete.

Now referring to FIG. 5 in Process Flow 500 the user has selected“Option B” and is presented with Sub-Flow 510. As depicted Sub-Flow 510comprising first to eleventh Sub-Flow Elements 515 to 565 respectively,these comprising:

-   -   First Sub-Flow Element 515: Calculate Brush Parameters needed        for First Mark;    -   Second Sub-Flow Element 520: Calculate Stroke needed for First        Mark;    -   Third Sub-Flow Element 525: Calculate Path needed for First        Mark;    -   Fourth Sub-Flow Element 530: Initiate Spooler and Apply Brush        Mark;    -   Fifth Sub-Flow Element 535: Either Directly Respond to User        Input by Providing Requested Mark, Stroke or Path or Calculate        Partial Response to User Input (Modify Mark, Stroke or Path);    -   Sixth Sub-Flow Element 540: Check User Input Again (If None        Proceed)    -   Seventh Sub-Flow Element 545: Calculate Brush Parameters needed        for Second Mark (with interpolation if required);    -   Eighth Sub-Flow Element 550: Calculate Stroke needed for Second        Mark (with interpolation if required);    -   Ninth Sub-Flow Element 555: Calculate Path needed for Second        Mark (with interpolation if required);    -   Tenth Sub-Flow Element 560: Initiate Spooler and Apply Brush        Mark; and    -   Eleventh Sub-Flow Element 565: Repeat Until Request is Complete.

Now referring to FIG. 6 in Process Flow 500 the user has selected“Option C” may be presented with an intermediate menu/GUI to establishfirst Sub-Flow 610 or second Sub-Flow 620 as the process executed by thestroke tapestry engine. As depicted first Sub-Flow 610 comprising firstto ninth Sub-Flow Elements 611 to 619 respectively, these comprising:

-   -   First Sub-Flow Element 611: Calculate Brush Parameters needed        for First Mark    -   Second Sub-Flow Element 612: Calculate Stroke needed for First        Mark    -   Third Sub-Flow Element 613: Fetch Path needed for First Mark        using Pre-Existing “Smart Strokes”, “Salient Strokes” or        Otherwise Automatically Defined Strokes and Calculate Path        needed for First Mark;    -   Fourth Sub-Flow Element 614: Initiate Spooler and Apply Brush        Mark;    -   Fifth Sub-Flow Element 615: Calculate Brush Parameters needed        for the Second Mark (with interpolation if needed);    -   Sixth Sub-Flow Element 616: Calculate Stroke needed for Second        Mark (with interpolation if required);    -   Seventh Sub-Flow Element 617: Fetch Path needed for Second Mark        using Pre-Existing “Smart Strokes”, “Salient Strokes” or        Otherwise Automatically Defined Strokes;    -   Eighth Sub-Flow Element 618: Initiate Spooler and Apply Brush        Mark; and    -   Ninth Sub-Flow Element 619: Repeat until Request is Complete.

Second Sub-Flow 620 comprises tenth to thirteen Sub-Flow Elements 621 to624 respectively, these comprising:

-   -   Tenth Sub-Flow Element 621: Calculate All Parameters needed for        Brush Marks    -   Eleventh Sub-Flow Element 622: Calculate All Strokes needed All        Brush Marks    -   Twelfth Sub-Flow Element 623: Fetch All Paths needed for First        Mark using Pre-Existing “Smart Strokes”, “Salient Strokes” or        Otherwise Automatically Defined Strokes; and    -   Thirteenth Sub-Flow Element 624: Initiate Spooler and Apply All        Brush Marks.

Alternatively, the stroke tapestry engine may employ two or more brushengines or the parameters specified fall within the parameters of two ormore brush engines. Accordingly, referring to FIGS. 7 and 8A there aredepicted exemplary Process Flows 700 and 800A for user input into astroke tapestry feature of a software application employing multiplebrush engines according to embodiments of the invention. Consideringinitially Process Flow 700 then this, as depicted, may comprise first tofourth Flow Elements 710 to 740 respectively, these comprising:

-   -   First Flow Element 710: User Specifies Start Point with        Parameters Made Available to User    -   Second Flow Element 720: User Specifies Start Point and        Parameters wherein Brush Engine 1 is selected (either by the        user or automatically by the stroke tapestry engine or another        aspect of the GESGEAP);    -   Third Flow Element 730: User Specifies End Point Control with        Same Parameters at Start Point or Different Parameters wherein        Brush Engine 2 is selected (either by the user or automatically        by the stroke tapestry engine or another aspect of the GESGEAP);        and    -   Fourth Flow Element 740: User Specifies Additional Points        between the First Two Points wherein Brush Engine N is selected        (either by the user or automatically by the stroke tapestry        engine or another aspect of the GESGEAP).

Alternatively, the user may select a predetermined set of parametersthereby triggering Process Flow 800A, as depicted in FIG. 8A, whichcomprises fifth to ninth Sub-Flow Elements 810 to 850 respectively,these comprising:

-   -   Fifth Sub-Flow Element 810: User Selects Pre-Determined Set of        Parameters, this pre-determined set of parameters may include,        but not be limited to, values for the brush engine(s), stroke        type, media, size, direction, pressure, opacity, and overlap;    -   Sixth Sub-Flow Element 820: User Specifies Start Point;    -   Seventh Sub-Flow Element 830: User Specifies End Point;    -   Eighth Sub-Flow Element 840 User Specifies Additional Points        between the Start and End Points; and    -   Ninth Sub-Flow Element 850: Parameter Set Executed with 2 or        More Brush Engines

Alternatively, the points may be sequentially defined discretely orthrough a path defined by a stroke where the end point is defined lastrather than before intermediate points.

Now referring to FIG. 8B there is depicted an exemplary Process Flow800B for user input into a stroke tapestry feature of a softwareapplication employing one or more brush engines according to embodimentsof the invention. Considering Process Flow 800B then this, as depicted,may comprise first to third Sub-Flows 8000A to 800C respectively withfinal step 8065. First Sub-Flow 8000A comprising first to fifth steps8010 to 8020C, these comprising:

-   -   First step 8010 wherein the user specifies a start point for the        stroke tapestry to be generated;    -   Second step 8105 wherein the user is prompted to select a        sub-process for establishing the parameters of the start point,        which are depicted in this exemplary process flow as being 3        options, being:        -   “Option 1”: Allow the software application and/or one or            more brush engines to automatically calculate the            parameters;        -   “Option 2”: User selection of a pre-determined set of            parameters; and        -   “Option 3”: User selects to employ “intelligent paths”;    -   Third step 8020A wherein the user has selected “Option 1”        wherein the software application and/or one or more brush        engines automatically calculate the parameters and proceeds to        second Sub-Flow 8000B;    -   Fourth step 8020B wherein the user has selected “Option 2”        electing to select a pre-determined set of parameters wherein        these are selected by the user, for example, from a drop-down        menu or other menu method known the art allowing them to select        the pre-determined set of parameters which may be a set defined        by the software application, a set previously defined by the        user, or a set purchased from a third party where these may be        listed using mnemonic, nicknames, etc. such as “leaves”,        “waves”, “warping”, “grass”, etc. Once selected the process        proceeds to second Sub-Flow 8000B; and    -   Fifth step 8020C wherein the user elects to employ “intelligent        paths” which are described elsewhere and not repeated here for        brevity after which the process proceeds to second Sub-Flow        8000B.

Second Sub-Flow 8000B comprises sixth to tenth steps 80025 to 8035Crespectively, these comprising:

-   -   Sixth step 8025 wherein the user specifies an end point or end        points for the stroke tapestry to be generated;    -   Seventh step 8030 wherein the user is prompted to select a        sub-process for establishing the parameters of the start point,        which are depicted in this exemplary process flow as being 3        options, which similarly:        -   “Option 1”: Allow the software application and/or one or            more brush engines to automatically calculate the            parameters;        -   “Option 2”: User selection of a pre-determined set of            parameters; and        -   “Option 3”: User selects to employ “intelligent paths”;    -   Eighth step 8035A wherein the user has selected “Option 1”        wherein the software application and/or one or more brush        engines automatically calculate the parameters and proceeds to        third Sub-Flow 8000C;    -   Fourth step 8035B wherein the user has selected “Option 2”        electing to select a pre-determined set of parameters wherein        these are selected by the user, for example, from a drop-down        menu or other menu method known the art allowing them to select        the pre-determined set of parameters which may be a set defined        by the software application, a set previously defined by the        user, or a set purchased from a third party where these may be        listed using mnemonic, nicknames, etc. such as “leaves”,        “waves”, “warping”, “grass”, etc. Once selected the process        proceeds to third Sub-Flow 8000C; and    -   Fifth step 8035C wherein the user elects to employ “intelligent        paths” which are described elsewhere and not repeated here for        brevity after which the process proceeds to third Sub-Flow        8000C.

Third Sub-Flow 8000C comprises eleventh to sixteenth steps 8040 to 8060respectively, these comprising:

-   -   Eleventh step 8040 wherein the user is prompted as to whether        they wish to add an additional point or points wherein if they        do the process continues within third Sub-Flow 8000C with        twelfth step 8045 otherwise it exits the third Sub-Flow 8000C        and proceeds to sixteenth step 8060;    -   Twelfth step 8045 wherein the user specifies the additional        point for the stroke tapestry to be generated;    -   Thirteenth step 8050 wherein the user is prompted to select a        sub-process for establishing the parameters of the start point,        which are depicted in this exemplary process flow as being 3        options, which similarly:        -   “Option 1”: Allow the software application and/or one or            more brush engines to automatically calculate the            parameters;        -   “Option 2”: User selection of a pre-determined set of            parameters; and        -   “Option 3”: User selects to employ “intelligent paths”;    -   Fourteenth step 8055A wherein the user has selected “Option 1”        wherein the software application and/or one or more brush        engines automatically calculate the parameters and proceeds back        to eleventh step 8040;    -   Fourth step 8035B wherein the user has selected “Option 2”        electing to select a pre-determined set of parameters wherein        these are selected by the user, for example, from a drop-down        menu or other menu method known the art allowing them to select        the pre-determined set of parameters which may be a set defined        by the software application, a set previously defined by the        user, or a set purchased from a third party where these may be        listed using mnemonic, nicknames, etc. such as “leaves”,        “waves”, “warping”, “grass”, etc. Once selected the process        proceeds back to eleventh step 8040; and    -   Fifth step 8035C wherein the user elects to employ “intelligent        paths” which are described elsewhere and not repeated here for        brevity after which the process proceeds back to eleventh step        8040.

Seventeenth step 8060 wherein the one or more brush engines execute thestroke tapestry.

Within sixth step 8025 in contrast to other embodiments of the inventionthe user may select multiple end-points such that, for example, they cancreate a stroke tapestry which radiates from the start point to themultiple end points. Within other embodiments of the invention the usermay alternatively select a set of start point/end point combinations andapply the same stroke tapestry to these simultaneously or sequentiallyif user interaction with the stroke tapestry generation is required bythe user.

Within the second and third Sub-Flows 8000B and 8000C as described anddepicted for the end point and the additional points the user is giventhe same options for defining the parameters to employ at the end point.Accordingly, a user may elect to start with a pre-defined set ofparameters “water” but transition to “stones” by the end point forexample. Within other embodiments of the invention the user may, uponmaking one selection for the start point be presented with a sub-set ofthe options for the end point and/or additional point(s) or with otheroptions for the end point and/or additional point(s).

Now referring to FIGS. 9 and 10 there are depicted exemplary ProcessFlows 900 and 1000 for a software application providing a stroketapestry feature employing multiple brush engines according toembodiments of the invention. Referring initially to Process Flow 900then the process starts at step 910 before progressing to Blend Creation920 and therein to first Sub-Flow 930(1) and therein to N^(th) Sub-Flow930(N) via intermediate Sub-Flows 930(2) to 930(N−1). Whilst FIG. 9depicts the scenario where N=4 it would be evident that N may be aninteger and N≥2.

Blend Creation 920 as depicted comprising first to third steps 921 to923, these comprising:

-   -   First step 921: Create a Blend Map for Each Required Brush        Engine    -   Second step 922: Lookup which Parameter to Modify in the Brushes        between

Technologies; and

-   -   Third step 923: Lookup Overlap Needed between Brush Engines.

Once the Blend Creation 920 step has been completed then the ProcessFlow 900 proceeds to first Sub-Flow 930(1) before proceeding to N^(th)Sub-Flow 930(N) via intermediate Sub-Flows 930(2) to 930(N−1). Asdepicted first Sub-Flow 930(N) and N^(th) Sub-Flow 930(N) each comprisethe same sequence of steps, these being first to ninth Sub-Flow Elements931 to 939, respectively. These comprising:

-   -   First Sub-Flow Element 931: Calculate Brush Parameters needed        for First Mark;    -   Second Sub-Flow Element 932: Calculate Stroke needed for First        Mark;    -   Third Sub-Flow Element 933: Calculate Path needed for First        Mark;    -   Fourth Sub-Flow Element 934: Initiate Spooler and Apply Brush        Mark;    -   Fifth Sub-Flow Element 935: Calculate Brush Parameters needed        for Second Mark (with interpolation if required);    -   Sixth Sub-Flow Element 936: Calculate Stroke needed for Second        Mark (with interpolation if required);    -   Seventh Sub-Flow Element 937: Calculate Path needed for Second        Mark (with interpolation if required);    -   Eighth Sub-Flow Element 938: Initiate Spooler and Apply Brush        Mark; and    -   Ninth Sub-Flow Element 939: Repeat Until Brush Engine Complete.

Alternatively, the user may select a predetermined set of parametersthereby triggering Process Flow 1000, which as depicted comprises step910 and Blend Creation 920 as described with respect to Process Flow 900in FIG. 9 and then proceeds to first Brush Engine Sub-Flow 1010(1) andtherein to N^(th) Brush Engine Sub-Flow 1010(N) via intermediate BrushEngine Sub-Flows 1010(2) to 1010(N−1). Whilst FIG. 9 depicts thescenario where N=4 it would be evident that N may be an integer and N≥2.

Each Brush Engine Sub-Flow comprising first to fourth steps 1011 to 1014for its respective Brush Engine M, where 1≤M≤N. First to fourth steps1011 to 1014 comprising:

-   -   First step 1011: Calculate All Brush Parameters needed for All        Brush Marks;    -   Second step 1012: Calculate All Strokes needed for All Brush        Marks;    -   Third step 1013: Calculate All Paths needed for All Brush Marks;        and    -   Fourth step 1014: Initiate Spooler and Apply All Brush Marks for        Brush Engine.

Within FIGS. 9 and 10 a blend map is described which is employed by eachbrush engine when two or more brush engines are employed to render thestroke tapestry. Within an embodiment of the invention these blend mapsfor each brush engine may be derived from a master blend map which isestablished initially and defines the parameters for each brush engine.Within embodiments of the invention if N brush engines are establishedto generate the stroke tapestry then the master blend map may be dividedinto N regions where these regions are equal in some parameter, e.g.width, height, area, etc. or they may unequal. Accordingly, if, forexample, the density of brush strokes is to vary from dense to lightthen the brush engines may be assigned based upon segmenting the masterblend map for an approximately constant number of brush strokes to begenerated/rendered for each brush engine. The master blend map may,within embodiments of the invention, be segmented to the individualblend maps based upon one or more rules established within the softwareapplication generally which define how the master blend map and/orindividual blend maps are to be generated. Alternatively, the rule orrules may be associated with a predetermined set of parameters forgenerating a specific stroke tapestry, e.g. applying an effect entitled“grass” may not only define the parameters of the stroke tapestry butalso how a blend map is generated and applied to multiple brush engines.Similarly, if a third party “effect” is purchased then in addition tothe parameters this may purchased effect may include the rules for how ablend map is generated and applied to multiple brush engines.

Within the images FIGS. 11 to 15 and 18 to 20 described below depictingembodiments of the invention the stroke generated by the stroke tapestryengine are depicted in rows/columns with regular pattern where therandomness of the stroke tapestry engine has been set to zero forclarity of depiction. FIGS. 16 and 17 depict results with a randomnessof 50 rather than 0 indicate how additional realism may be introducedinto the painting by applying a randomness to the positioning of thestrokes. Similarly, the Control GUI 100D in FIG. 1D and subsequentdepictions represent a simple control GUI for the parameters of a stroketapestry engine according to embodiments of the invention. However, itwould be evident that through randomness of either position, count,size, etc. as well as other aspects of stroke rendering such as jitterwithin a stroke etc. may result in the strokes varying relative to oneanother within the stroke tapestry. Such aspects being omitted from theFigures for clarity of presenting the stroke tapestry engine but may beapplied through a more extensive control GUI or multiple control GUIs toapply such aspects to the generated strokes. Further, during generationthe stroke engine may take user input, e.g. gesture characteristics,expressions etc., such that user directed variations are introduceddiscretely or in combination with pseudo-random ones generated by thestroke tapestry engine.

Now referring to FIG. 11 there is depicted an exemplary sequence of astroke tapestry feature of a software application with a basic path andtwo strokes to interpolate from according to an embodiment of theinvention. Accordingly, in first image 1110 the user is defining a basicpath from start point 1111 to end point 1112. As described and depictedin respect of Control GUI 100D in FIG. 1D either before or afterdefining each of the start point 1111 and end point 1112 the user candefine the stroke at each. These accordingly being depicted in secondimage 1120 with start stroke 1121 and end stroke 1122. Accordingly, thestroke tapestry engine using the parameters set by the user proceeds tointerpolate color, shape etc. and generates stroke tapestry result 1135in third image 1130.

Now referring to FIG. 12 there is depicted an exemplary sequence of astroke tapestry feature of a software application with a non-linear pathdefined with multiple points and multiple strokes to interpolate fromaccording to an embodiment of the invention. Accordingly, in first image1210 the user is defining a basic path from start point 1215(1) to endpoint 1215(N). As described and depicted in respect of Control GUI 100Din FIG. 1D either before or after defining each of the start point1215(1), the end point 1215(N) and intermediate point the user candefine the stroke at each point, these being depicted as first to thirdstrokes 1225(1) for the stroke at start point, 1225(M) for theintermediate stroke, and 1225(N) for the stroke at the end point.Accordingly, the stroke tapestry engine using the parameters set by theuser proceeds to interpolate color, shape etc. and generates stroketapestry result 1235 in third image 1230.

Now referring to FIG. 13 there is depicted an exemplary sequence of astroke tapestry feature of a software application with drag outdirection/orientation and user selection of options for each nodeaccording to an embodiment of the invention. Accordingly, in first image1310 the user is defining a basic path from start point 1311 to endpoint 1312. As described and depicted in respect of Control GUI 100D inFIG. 1D either before or after defining each of the start point 1311 and1312 the user can define the stroke at each as represented by GUI 1325in second image 1320. Accordingly, the stroke tapestry engine using theparameters set by the user proceeds to interpolate color, shape etc. andgenerates stroke tapestry result 1335 in third image 1330 wherein theGESGEAP has drawn the tapestry 1335 across the width of the documentwith strokes.

Referring to FIG. 14 there is depicted an exemplary sequence of a stroketapestry feature of a software application with drag outdirection/orientation and user selection of options for each nodeaccording to an embodiment of the invention with multiple nodes wherethe software application generates brush strokes from one end to theother. Accordingly, in contrast to FIG. 13 the user has now specifiedstart and end points 1411 and 1412 respectively in first image 1410before adding an intermediate point 1421 in second image 1420 andsetting the parameters via GUI 1425. Accordingly, the stroke tapestryengine using the parameters set by the user proceeds to interpolatecolor, shape etc. and generates stroke tapestry result in third image1430 wherein the GESGEAP has drawn the tapestry across the width of thedocument with strokes but now due to the different settings the tapestrycomprises a lower section 1435A with a wider spacing between sequentialrows than that in upper section 1435B.

Now referring to FIG. 15 there is depicted an exemplary sequence of astroke tapestry feature of a software application with drag outdirection/orientation and user selection of options for each nodeaccording to an embodiment of the invention where the softwareapplication generates brush strokes radiating out. Accordingly, in firstimage 1510 the user establishes a path comprising start point 1511 andend point 1512, e.g. by two discrete point selection actions or througha select-and-drag action. Then in second image 1520 the user via ControlGUI 1525 defines the parameters for the stroke tapestry which is thenexecuted by the stroke tapestry engine resulting in third image 1530wherein the stroke tapestry 1535 has been generated. In this instancerather than “horizontal” as selected previously in FIGS. 11 to 14 theuser has now selected “radial” for the direction selector. Within thirdimage 1530 the stroke tapestry 1535 exceeds the document boundary. Thismay, for example, be such that user can subsequently manipulate thestroke tapestry within the document or that the region of the documentcurrently being viewed is part of the overall document, for example.

Referring to FIG. 16 there is depicted an exemplary sequence of a stroketapestry feature of a software application with drag outdirection/orientation and user selection of options for each nodeaccording to an embodiment of the invention where the softwareapplication generates brush strokes with randomness and growth.Accordingly, in first image 1610 the user establishes a path comprisingstart point 1611 and end point 1612, e.g. by two discrete pointselection actions or through a select-and-drag action. Then in secondimage 1620 the user via Control GUI 1525 defines the parameters for thestroke tapestry which is then executed by the stroke tapestry engineresulting in third image 1630 wherein the stroke tapestry 1635 has beengenerated. In this instance rather than “horizontal” as selectedpreviously in FIGS. 11 to 14 or “radial” in FIG. 15 the user has nowselected “growth” for the direction selector. Accordingly, it is evidenthow the stroke tapestry feature by appropriate selection of stroke andpoints/parameters can rapidly automatically generate an element of adocument, in this instance an element resembling a tree.

Now referring to FIG. 17 there is depicted an exemplary sequence of astroke tapestry feature of a software application with drag outdirection/orientation and user selection of options for each node aswell as whether the process is linear, random per node or random perstroke according to an embodiment of the invention with multiple nodeswhere the software application generates brush strokes at each nodeslowly filling the area. Accordingly, in first image 1710 the user hasselected a series of points, first to third points 1711 to 1713, priorto establishing the settings for the stroke tapestry engine with ControlGUI 1725 in second image 1720. For example, the user may choose theoptions per node or for all nodes at once as well as establishingwhether, for example, the process is linear, random per node, or randomper stoke. Accordingly, around first point 1711 the stroke tapestryengine starts applying strokes to form first region 1731, strokes toform second region 1732 around second point 1712, and strokes to formthird region 1733 around third point 1713. However, as the stroketapestry engine paints at each node it also starts filling theintermediate area between these points. Accordingly:

-   -   fourth region 1734 begins with a colour graded between that        selected for first point 1711 and second point 1712;    -   fifth region 1735 begins with a colour graded between that        selected for second point 1712 and third point 1713;    -   sixth region 1736 begins with a colour graded between that        selected for first point 1711 and third point 1713.

Accordingly, with more points more complex regions to fill automaticallywith the stroke tapestry engine can be defined.

Referring FIG. 18 there is depicted an exemplary sequence of a stroketapestry feature of a software application with drag outdirection/orientation and user selection of options where the user editsthe path shape and adds request for randomness according to anembodiment of the invention where the software application generatesbrush strokes along the altered path. Accordingly, the user initiallyselects a path 1813 from start point 1811 to end point 1812 in firstimage 1810 and applies a shape, depicted as start shape 1821 and endshape 1822 in second image 1820. However, the user also adjusts thepath, e.g. by clicking and selecting a function or clicking-and-draggingfor example, to yield modified path 1823. The results is a series ofintermediate shapes (strokes) 1831(N) which transition from the startshape 1821 to end shape 1823 along the modified path 1823.

Now referring to FIG. 19 there is depicted an exemplary sequence of astroke tapestry feature of a software application with a user selectingtwo multi-stroke features to interpolate with a created selectionaccording to an embodiment of the invention where the softwareapplication interpolates the multi-stroke features for colour andgeometry before painting only that portion of the generated stroketapestry within the created selection. Accordingly, in first image 1910a user creates a region 1911. Then in second image 1920 the user definesa path from start point 1921 with start stroke (or shape, tool mark,image etc.) 1923 to end point 1922 with end stroke 1924 (or shape, toolmark, image etc.). The stroke tapestry engine generates as depicted inthird image 1930 the multiple strokes 1931(N) before these are croppedby the region 1911 as depicted in fourth image 1940 so that only thatportion within the region 1911 is maintained. Optionally, region 1911may be an exclusion region such that the tapestry is generated andmaintained over the remainder of the document where it is generated andthe exclusion region is not filled such as depicted in fifth image 1950.

Referring to FIG. 20 there is depicted an exemplary rendered image via astroke tapestry feature of a software application according to anembodiment of the invention where an intelligent stroke feature findsedges within underlying rendered content and follows these edges.Accordingly, an exemplary process such as described and depicted in FIG.13 is performed by the region being filled with the stroke tapestry hasunderlying content associated with it, e.g. a texture, flow map, imageor other content. Accordingly, as the stoke tapestry engine generatesthe stroke tapestry it processes the underlying content, in thisinstance a simple graphic of a face, defining edges within theunderlying content such that the stroke tapestry engine overrides thesettings for a horizontal brush stroke set and follows these edges.Optionally, these may be contours defined within the underlying content,or a flow map/texture defining a graded pattern of features which areemployed. Accordingly, the user when defining the stroke tapestry canselect a different layer, for example, within the document to providethe underlying content. Optionally, the underlying content by notselecting this layer, for example, is not rendered in the final image.

Now referring FIG. 21 there is depicted an exemplary rendered image viaa stroke tapestry feature of a software application according to anembodiment of the invention where an intelligent stroke feature enabledthe user to interact with the strokes being generated thereby adjustingthe rendered stroke tapestry, in this instance to render a ripple ofstrokes along a path. In this instance the user may have set the speedof the stroke tapestry engine to a low value so that the stroke tapestryengine generates and renders the stroke tapestry at a speed the user iscomfortable working with. Accordingly, as the stroke tapestry engine hasprogressed the user is able to interact with the stroke tapestry, e.g.through a user interface, such that the stroke tapestry engine adjustsin response to the user inputs. In the example depicted in FIG. 21 theuser has executed an s-shaped stroke from bottom left (assuming thestroke tapestry engine started at the bottom) to the top right. A userinterface may include, but not be limited to, a stylus, mouse, andtouchpad. The user may be able to select the result or select tore-execute and apply a new stroke as they were unhappy with theirinitial attempt. Optionally, the user may select the result and have thestroke tapestry engine regenerate from this generated stroke tapestrywith their initial stroke to modify it based upon one or more subsequentstrokes.

It would be evident that the multiple aspects described and depicted inFIGS. 11 to 21 represent a subset of the features and techniques thatcan be applied individually or in different combinations.

If a user has enabled what the inventor refers to as “intelligent paths”then the portion of the stroke tapestry engine that calculates paths isautomatically altered. For example, an intelligent path may exploit apre-existing path defined by the user. This may be viewed as anextension of a “recorded stroke” wherein a user creates a stroke on adocument and saves the stroke data for subsequent use. In one variantthe “intelligent path” takes the recorded stroke and generates a pathfrom it to which the selected stroke or strokes are applied. In anothervariant the stroke defines the area rather than just a path. Forexample, a recorded stroke generated using a large calligraphy brushdefines an overall shape to which the stroke tapestry may be applied asthe recorded stroke now defines the start and end points as well aswidth/stroke direction.

Alternatively, the intelligent path may exploit “smart strokes’ whereinthe software application finds edges in an image that is part of thedocument which may or may not be visible and defines the geometry of thestroke tapestry in dependence upon the found edges.

Alternatively, the intelligent path may exploit “saliency” wherein thestroke tapestry engine processes content of the document on the samelayer and/or on one or more other layers specified, to define the path(what the inventors refers to as a “salient” path where this may bedefined by processing the content to define “regions of interest.” Thesemay, for example, be defined through the application of one or moreimage processing algorithms, or another intelligent mapping technology,which allow the use of image maps to determine area to be filled.

If the user has enabled what the inventor refers to as ‘interactivestrokes’ are enabled, then stroke path calculations are performed asdescribed above although the user can interrupt the spooler by creatingnew coordinates in real-time, e.g. X,Y coordinates, as well asgenerating data such as pressure (Z) tilt/bearing etc. The user caninfluence the strokes in either a linear, or non-linear way. If, forexample, a user asks for a position well outside of the currentposition, the spooler may choose a point half-way in between therequest, directly beneath the request, or only a small difference awayfrom the request. The spooler may routinely poll the user input for newlocations, and if no new updates are provided, it returns to the routinestored in memory.

Within the preceding description reference has been made primarily tolinear or two or more node-based interactions, however this can easilybe expanded on by offering a node interaction anywhere on the documentspace, with each node having parameters specified and the engineinterpolating between nodes. In this ‘spatial node’ embodiment, theprocessing of nodes can be in the order added by the user, or somerandom order of nodes, or even random strokes chosen between nodes.

Accordingly it would be evident that the embodiments of the inventiondescribed and depicted above with respect to FIGS. 1A to 21 may provideusers with:

-   -   An ability to fill large areas with little effort wherein as the        medium, e.g. paint, is actually “applied”, it will have all the        important aesthetics of real brush strokes including, but not        limited to, variance in size, opacity, paper grain, blending        etc. as opposed to other filter, style transfer, or generative        stroke methods.    -   Provide users with a means to eliminate ‘blank canvas syndrome’        where a user may run the tool to start a new painting. This        issue is common with many digital users as that giant blank        document can be very intimidating. By applying some random        colors or strokes, users may be inspired to create or they may        find interesting shapes or patterns within the applied paint and        start to create for themselves.    -   Provide users with a technology could enhance a workflow, e.g. a        photo art workflow, whereby brush strokes have color and or        pixels sampled from a source image. The advantage over existing        photo art workflow is that it can offer the user a choice        somewhere between autopainting where strokes are added quickly        with very little control, and painting strokes by hand, which        can be very time consuming.    -   Stroke placement can be more precise than human placement, or        very un-precise, with natural-looking randomness, and the user        can choose this before or during the painting process.    -   The available “strokes” and “tapestry patterns” can be templates        or user defined. Templates may for example provide for the        strokes to appear as waves, leaves, etc. or abstract patterns        like fractals or Perlin noise. The user can select this pattern        and how the strokes apply within this pattern from one area to        another.    -   Specific areas or shapes can be “painted”, thus adding the        ability to generate both real-world and abstract elements of the        artwork being created.    -   Where very precise shaping is needed, stroke tapestry can work        with other tools within the GESGEAPs such as object selection,        colour selection, geometry selection, etc.    -   For some users, this may provide an entirely new workflow. For        example, the stroke tapestry engine could be setup to randomly        add nodes and strokes at a certain speed, and the user would        strategically sculpt and shape the paint as it applied, akin to        pressing on spinning clay or blowing around snowflakes in an        entirely novel, playful experience.

Specific details are given in the above description to provide athorough understanding of the embodiments. However, it is understoodthat the embodiments may be practiced without these specific details.For example, circuits may be shown in block diagrams in order not toobscure the embodiments in unnecessary detail. In other instances,well-known circuits, processes, algorithms, structures, and techniquesmay be shown without unnecessary detail in order to avoid obscuring theembodiments.

Implementation of the techniques, blocks, steps and means describedabove may be done in various ways. For example, these techniques,blocks, steps and means may be implemented in hardware, software, or acombination thereof. For a hardware implementation, the processing unitsmay be implemented within one or more application specific integratedcircuits (ASICs), digital signal processors (DSPs), digital signalprocessing devices (DSPDs), programmable logic devices (PLDs), fieldprogrammable gate arrays (FPGAs), processors, controllers,micro-controllers, microprocessors, other electronic units designed toperform the functions described above and/or a combination thereof.

Also, it is noted that the embodiments may be described as a processwhich is depicted as a flowchart, a flow diagram, a data flow diagram, astructure diagram, or a block diagram. Although a flowchart may describethe operations as a sequential process, many of the operations can beperformed in parallel or concurrently. In addition, the order of theoperations may be rearranged. A process is terminated when itsoperations are completed, but could have additional steps not includedin the figure. A process may correspond to a method, a function, aprocedure, a subroutine, a subprogram, etc. When a process correspondsto a function, its termination corresponds to a return of the functionto the calling function or the main function.

Furthermore, embodiments may be implemented by hardware, software,scripting languages, firmware, middleware, microcode, hardwaredescription languages and/or any combination thereof. When implementedin software, firmware, middleware, scripting language and/or microcode,the program code or code segments to perform the necessary tasks may bestored in a machine readable medium, such as a storage medium. A codesegment or machine-executable instruction may represent a procedure, afunction, a subprogram, a program, a routine, a subroutine, a module, asoftware package, a script, a class, or any combination of instructions,data structures and/or program statements. A code segment may be coupledto another code segment or a hardware circuit by passing and/orreceiving information, data, arguments, parameters and/or memorycontent. Information, arguments, parameters, data, etc. may be passed,forwarded, or transmitted via any suitable means including memorysharing, message passing, token passing, network transmission, etc.

For a firmware and/or software implementation, the methodologies may beimplemented with modules (e.g., procedures, functions, and so on) thatperform the functions described herein. Any machine-readable mediumtangibly embodying instructions may be used in implementing themethodologies described herein. For example, software codes may bestored in a memory. Memory may be implemented within the processor orexternal to the processor and may vary in implementation where thememory is employed in storing software codes for subsequent execution tothat when the memory is employed in executing the software codes. Asused herein the term “memory” refers to any type of long term, shortterm, volatile, nonvolatile, or other storage medium and is not to belimited to any particular type of memory or number of memories, or typeof media upon which memory is stored.

Moreover, as disclosed herein, the term “storage medium” may representone or more devices for storing data, including read only memory (ROM),random access memory (RAM), magnetic RAM, core memory, magnetic diskstorage mediums, optical storage mediums, flash memory devices and/orother machine readable mediums for storing information. The term“machine-readable medium” includes, but is not limited to portable orfixed storage devices, optical storage devices, wireless channels and/orvarious other mediums capable of storing, containing or carryinginstruction(s) and/or data.

The methodologies described herein are, in one or more embodiments,performable by a machine which includes one or more processors thataccept code segments containing instructions. For any of the methodsdescribed herein, when the instructions are executed by the machine, themachine performs the method. Any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine are included. Thus, a typical machine may be exemplifiedby a typical processing system that includes one or more processors.Each processor may include one or more of a CPU, a graphics-processingunit, and a programmable DSP unit. The processing system further mayinclude a memory subsystem including main RAM and/or a static RAM,and/or ROM. A bus subsystem may be included for communicating betweenthe components. If the processing system requires a display, such adisplay may be included, e.g., a liquid crystal display (LCD). If manualdata entry is required, the processing system also includes an inputdevice such as one or more of an alphanumeric input unit such as akeyboard, a pointing control device such as a mouse, and so forth.

The memory includes machine-readable code segments (e.g. software orsoftware code) including instructions for performing, when executed bythe processing system, one of more of the methods described herein. Thesoftware may reside entirely in the memory, or may also reside,completely or at least partially, within the RAM and/or within theprocessor during execution thereof by the computer system. Thus, thememory and the processor also constitute a system comprisingmachine-readable code.

In alternative embodiments, the machine operates as a standalone deviceor may be connected, e.g., networked to other machines, in a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in server-client network environment, or as a peermachine in a peer-to-peer or distributed network environment. Themachine may be, for example, a computer, a server, a cluster of servers,a cluster of computers, a web appliance, a distributed computingenvironment, a cloud computing environment, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. The term “machine” may also betaken to include any collection of machines that individually or jointlyexecute a set (or multiple sets) of instructions to perform any one ormore of the methodologies discussed herein.

The foregoing disclosure of the exemplary embodiments of the presentinvention has been presented for purposes of illustration anddescription. It is not intended to be exhaustive or to limit theinvention to the precise forms disclosed. Many variations andmodifications of the embodiments described herein will be apparent toone of ordinary skill in the art in light of the above disclosure. Thescope of the invention is to be defined only by the claims appendedhereto, and by their equivalents.

Further, in describing representative embodiments of the presentinvention, the specification may have presented the method and/orprocess of the present invention as a particular sequence of steps.However, to the extent that the method or process does not rely on theparticular order of steps set forth herein, the method or process shouldnot be limited to the particular sequence of steps described. As one ofordinary skill in the art would appreciate, other sequences of steps maybe possible. Therefore, the particular order of the steps set forth inthe specification should not be construed as limitations on the claims.In addition, the claims directed to the method and/or process of thepresent invention should not be limited to the performance of theirsteps in the order written, and one skilled in the art can readilyappreciate that the sequences may be varied and still remain within thespirit and scope of the present invention.

What is claimed is:
 1. Computer executable instructions stored upon anon-volatile, non-transitory storage medium where the executableinstructions when executed by one or more processors of a systemconfigure the system to execute a process comprising: establishing independence upon user input a first point within a document opened uponthe system; establishing in dependence upon further user input a secondpoint within the document; establishing in dependence upon additionaluser input one or more stroke parameters to apply to rendering contentat least one of the first point and the second point; and executing astroke tapestry engine to generate a stroke tapestry for rendering upona display associated with the system; wherein the stroke tapestrycomprises a plurality of brush strokes automatically generated by thestroke tapestry engine along a path established between the first pointand the second point; the plurality of brush strokes transition from oneor more first marks at the first point to one or more second marks atthe second point in dependence upon the one or more stroke parameters;and the stroke tapestry engine executes a process comprising: a)calculating brush parameters needed for one or more first marks; b)calculating a stroke needed for the one or more first marks; c)calculating a first path needed for the one or more first marks; d)initiating a spooler and applying the one or more first marks; e)identifying new user input whilst the stroke tapestry engine isexecuting; f) either: directly responding to the new user input byproviding at least one of a requested mark, requested stroke andrequested path established in dependence upon the new user input; or:calculating a partial response to the new user input by providing amodification to at least one of a subsequent mark, a stroke and the pathwhere the modification is established in dependence upon the new userinput; g) calculating brush parameters needed for one or more furthermarks in dependence upon interpolating between one or more first marksand the one or more second marks; h) calculating a further stroke neededfor the one or more further marks in dependence upon interpolatingbetween one or more first marks and the one or more second marks; i)calculating a second path needed for the one or more further marks independence upon interpolating between one or more first marks and theone or more second marks; j) initiating the spooler and apply the one ormore further marks; and k) repeating the steps (f) to (j) until processapplies the one or more second marks.
 2. Computer executableinstructions stored upon a non-volatile, non-transitory storage mediumwhere the executable instructions when executed by one or moreprocessors of a system configure the system to execute a processcomprising: establishing in dependence upon user input a first pointwithin a document opened upon the system and one or more strokeparameters to apply to rendering content at the first point; assigningthe first point and one or more stroke parameters to a first brushengine; establishing in dependence upon further user input a secondpoint within the document opened upon the system and one or more furtherstroke parameters to apply to rendering content at the second point;assigning the second point and one or more further stroke parameters toa second brush engine; establishing in dependence upon additional userinput a plurality of third points within the document opened upon thesystem and a plurality of sets of additional stroke parameters whereeach set of additional stroke parameters of the plurality of sets ofadditional stroke parameters is associated with a predetermined thirdpoint of the plurality of third points; and assigning each third pointof the plurality of third points and the set of additional strokeparameters of the plurality of sets of additional stroke parametersassociated with the third point of the plurality of third points to adifferent brush engine; executing a stroke tapestry engine comprising atleast the first engine and second engine to generate a stroke tapestryfor rendering upon a display associated with the system; wherein thestroke tapestry comprises a plurality of brush strokes automaticallygenerated by the stroke tapestry engine along a path established betweenthe first point and the second point; the first point, second point andthe plurality of third points comprise a total of N points; there are Nbrush engines; and the plurality of brush strokes transition from one ormore first marks at the first point to one or more second marks at thesecond point in dependence upon the one or more stroke parameters. 3.The computer executable instructions according to claim 2, wherein eachof the first brush engine and second brush engine executes a processcomprising: a) calculating brush parameters needed for one or more firstmarks; b) calculating a stroke needed for the one or more first marks;c) calculating a first path needed for the one or more first marks; d)initiating a spooler and applying the one or more first marks; e)calculating brush parameters needed for one or more further marks independence upon interpolating between one or more first marks and theone or more second marks; f) calculating a further stroke needed for theone or more further marks in dependence upon interpolating between oneor more first marks and the one or more second marks; g) calculating asecond path needed for the one or more further marks in dependence uponinterpolating between one or more first marks and the one or more secondmarks; h) initiating the spooler and apply the one or more furthermarks; and i) repeating the steps (e) to (h) until process applies theone or more second marks.
 4. The computer executable instructionsaccording to claim 2, wherein the stroke tapestry engine executes aprocess comprising: a) calculating all brush parameters needed for allmarks within the stroke tapestry; b) calculating all strokes needed forall marks within the stroke tapestry; c) calculating all paths neededfor all marks within the stroke tapestry; and d) initiating a spoolerand applying all the marks with the first brush engine and the secondbrush engine.
 5. The computer executable instructions according to claim2, wherein the stroke tapestry engine executes a process comprising: a)calculating all brush parameters needed for all marks within the stroketapestry; b) calculating all strokes needed for all marks within thestroke tapestry; c) calculating all paths needed for all marks withinthe stroke tapestry; and d) initiating a spooler and applying all themarks with the N brush engines.
 6. The computer executable instructionsaccording to claim 2, wherein each of the first brush engine and secondbrush engine executes a process comprising: a) calculating brushparameters needed for the one or more first marks; b) calculating astroke needed for the one or more first marks; c) calculating a firstpath needed for the one or more first marks; d) initiating a spooler andapplying the one or more first marks; e) identifying new user inputwhilst the stroke tapestry engine is executing; f) either: directlyresponding to the new user input by providing at least one of arequested mark, requested stroke and requested path established independence upon the new user input; or: calculating a partial responseto the new user input by providing a modification to at least one of asubsequent mark, a stroke and the path where the modification isestablished in dependence upon the new user input; g) calculating brushparameters needed for one or more further marks in dependence uponinterpolating between one or more first marks and the one or more secondmarks; h) calculating a further stroke needed for the one or morefurther marks in dependence upon interpolating between one or more firstmarks and the one or more second marks; i) calculating a second pathneeded for the one or more further marks in dependence uponinterpolating between one or more first marks and the one or more secondmarks; j) initiating the spooler and apply the one or more furthermarks; and k) repeating the steps (f) to (j) until process applies theone or more second marks.
 7. The computer executable instructionsaccording to claim 2, wherein each of the first brush engine and secondbrush engine executes a process comprising: a) calculating brushparameters needed for the one or more first marks; b) calculating astroke needed for the one or more first marks; c) fetching a first pathneeded for the one or more first marks; d) initiating a spooler andapplying the one or more first marks; e) identifying new user inputwhilst the stroke tapestry engine is executing; f) either: directlyresponding to the new user input by providing at least one of arequested mark, requested stroke and requested path established independence upon the new user input; or: calculating a partial responseto the new user input by providing a modification to at least one of asubsequent mark, a stroke and the path where the modification isestablished in dependence upon the new user input; g) calculating brushparameters needed for one or more further marks in dependence uponinterpolating between one or more first marks and the one or more secondmarks; h) calculating a further stroke needed for the one or morefurther marks in dependence upon interpolating between one or more firstmarks and the one or more second marks; i) fetching a second path neededfor the one or more further marks in dependence upon interpolatingbetween one or more first marks and the one or more second marks; j)initiating the spooler and apply the one or more further marks; and k)repeating the steps (f) to (j) until process applies the one or moresecond marks; and at least one of fetching the first path and fetchingthe second path is established in dependence upon at least one of:applying a pre-existing smart stroke selected by the user; automaticallyapplying a saliency process to the portion of the document the stroketapestry is being applied to; and automatically establishing the path independence upon processing an underlying item of content associated withthat portion of the document the stroke tapestry is being applied to. 8.The computer executable instructions according to claim 2, wherein eachof the first brush engine and second brush engine executes a processcomprising: a) calculating all brush parameters needed for all markswithin the stroke tapestry; b) calculating all strokes needed for allmarks within the stroke tapestry; c) fetching all paths needed for allmarks within the stroke tapestry; and d) initiating a spooler andapplying all the marks; and fetching all paths comprises at least oneof: applying a pre-existing smart stroke selected by the user;automatically applying a saliency process to the portion of the documentthe stroke tapestry is being applied to; and automatically establishingthe paths in dependence upon processing an underlying item of contentassociated with that portion of the document the stroke tapestry isbeing applied to.
 9. Computer executable instructions stored upon anon-volatile, non-transitory storage medium where the executableinstructions when executed by one or more processors of a systemconfigure the system to execute a process comprising: establishing independence upon user input a first point within a document opened uponthe system; establishing in dependence upon further user input a secondpoint within the document; establishing in dependence upon additionaluser input one or more stroke parameters to apply to rendering contentat least one of the first point and the second point; and executing astroke tapestry engine to generate a stroke tapestry for rendering upona display associated with the system; wherein the stroke tapestrycomprises a plurality of brush strokes automatically generated by thestroke tapestry engine along a path established between the first pointand the second point; the plurality of brush strokes transition from oneor more first marks at the first point to one or more second marks atthe second point in dependence upon the one or more stroke parameters;the stroke tapestry engine executes a process comprising: a) calculatingbrush parameters needed for one or more first marks; b) calculating astroke needed for the one or more first marks; c) fetching a first pathneeded for the one or more first marks; d) initiating a spooler andapplying the one or more first marks; e) identifying new user inputwhilst the stroke tapestry engine is executing; f) either: directlyresponding to the new user input by providing at least one of arequested mark, requested stroke and requested path established independence upon the new user input; or: calculating a partial responseto the new user input by providing a modification to at least one of asubsequent mark, a stroke and the path where the modification isestablished in dependence upon the new user input; g) calculating brushparameters needed for one or more further marks in dependence uponinterpolating between one or more first marks and the one or more secondmarks; h) calculating a further stroke needed for the one or morefurther marks in dependence upon interpolating between one or more firstmarks and the one or more second marks; i) fetching a second path neededfor the one or more further marks in dependence upon interpolatingbetween one or more first marks and the one or more second marks; j)initiating the spooler and apply the one or more further marks; and k)repeating the steps (f) to (j) until process applies the one or moresecond marks; and at least one of fetching the first path and fetchingthe second path is established in dependence upon at least one of:applying a pre-existing smart stroke selected by the user; automaticallyapplying a saliency process to the portion of the document the stroketapestry is being applied to; and automatically establishing the path independence upon processing an underlying item of content associated withthat portion of the document the stroke tapestry is being applied to.10. Computer executable instructions stored upon a non-volatile,non-transitory storage medium where the executable instructions whenexecuted by one or more processors of a system configure the system toexecute a process comprising: establishing in dependence upon user inputa first point within a document opened upon the system; establishing independence upon further user input a second point within the document;establishing in dependence upon additional user input one or more strokeparameters to apply to rendering content at least one of the first pointand the second point; and executing a stroke tapestry engine to generatea stroke tapestry for rendering upon a display associated with thesystem; wherein the stroke tapestry comprises a plurality of brushstrokes automatically generated by the stroke tapestry engine along apath established between the first point and the second point; theplurality of brush strokes transition from one or more first marks atthe first point to one or more second marks at the second point independence upon the one or more stroke parameters; the stroke tapestryengine executes a process comprising: a) calculating all brushparameters needed for all marks within the stroke tapestry; b)calculating all strokes needed for all marks within the stroke tapestry;c) fetching all paths needed for all marks within the stroke tapestry;and d) initiating a spooler and applying all the marks; and fetching allpaths comprises at least one of: applying a pre-existing smart strokeselected by the user; automatically applying a saliency process to theportion of the document the stroke tapestry is being applied to; andautomatically establishing the paths in dependence upon processing anunderlying item of content associated with that portion of the documentthe stroke tapestry is being applied to.